/**
 */
package org.mro.grib.model.files.secondEdition.products.meteorological.impl;

import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.impl.EPackageImpl;

import org.mro.grib.model.files.firstEdition.FirstEditionPackage;

import org.mro.grib.model.files.firstEdition.grids.GridsPackage;

import org.mro.grib.model.files.firstEdition.grids.impl.GridsPackageImpl;

import org.mro.grib.model.files.firstEdition.impl.FirstEditionPackageImpl;

import org.mro.grib.model.files.firstEdition.sections.SectionsPackage;

import org.mro.grib.model.files.firstEdition.sections.impl.SectionsPackageImpl;

import org.mro.grib.model.files.secondEdition.SecondEditionPackage;

import org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage;

import org.mro.grib.model.files.secondEdition.dataRepresentations.impl.DataRepresentationsPackageImpl;

import org.mro.grib.model.files.secondEdition.impl.SecondEditionPackageImpl;

import org.mro.grib.model.files.secondEdition.products.ProductsPackage;

import org.mro.grib.model.files.secondEdition.products.impl.ProductsPackageImpl;

import org.mro.grib.model.files.secondEdition.products.meteorological.AerosolsProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.AtmosphericChemicalConstituentsProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.CCITTIA5StringProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.CloudProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.ForecastRadarImageryProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.LongWaveRadiationProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.MassProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.MeteorologicalFactory;
import org.mro.grib.model.files.secondEdition.products.meteorological.MeteorologicalPackage;
import org.mro.grib.model.files.secondEdition.products.meteorological.MeteorologicalProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.MiscellaneousProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.MoistureProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.MomentumProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.NuclearRadiologyProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.PhysicalAtmosphericPropertiesProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.RadarProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.ShortWaveRadiationProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.TemperatureProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.ThermodynamicStabilityIndicesProducts;
import org.mro.grib.model.files.secondEdition.products.meteorological.TraceGasesProducts;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class MeteorologicalPackageImpl extends EPackageImpl implements MeteorologicalPackage {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum temperatureProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum meteorologicalProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum moistureProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum momentumProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum massProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum shortWaveRadiationProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum longWaveRadiationProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum cloudProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum thermodynamicStabilityIndicesProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum aerosolsProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum traceGasesProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum radarProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum forecastRadarImageryProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum nuclearRadiologyProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum physicalAtmosphericPropertiesProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum atmosphericChemicalConstituentsProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum ccittia5StringProductsEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum miscellaneousProductsEEnum = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see org.mro.grib.model.files.secondEdition.products.meteorological.MeteorologicalPackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private MeteorologicalPackageImpl() {
		super(eNS_URI, MeteorologicalFactory.eINSTANCE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
	 * 
	 * <p>This method is used to initialize {@link MeteorologicalPackage#eINSTANCE} when that field is accessed.
	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static MeteorologicalPackage init() {
		if (isInited) return (MeteorologicalPackage)EPackage.Registry.INSTANCE.getEPackage(MeteorologicalPackage.eNS_URI);

		// Obtain or create and register package
		MeteorologicalPackageImpl theMeteorologicalPackage = (MeteorologicalPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof MeteorologicalPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new MeteorologicalPackageImpl());

		isInited = true;

		// Obtain or create and register interdependencies
		FirstEditionPackageImpl theFirstEditionPackage = (FirstEditionPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(FirstEditionPackage.eNS_URI) instanceof FirstEditionPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(FirstEditionPackage.eNS_URI) : FirstEditionPackage.eINSTANCE);
		GridsPackageImpl theGridsPackage = (GridsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GridsPackage.eNS_URI) instanceof GridsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GridsPackage.eNS_URI) : GridsPackage.eINSTANCE);
		SectionsPackageImpl theSectionsPackage = (SectionsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SectionsPackage.eNS_URI) instanceof SectionsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SectionsPackage.eNS_URI) : SectionsPackage.eINSTANCE);
		SecondEditionPackageImpl theSecondEditionPackage = (SecondEditionPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SecondEditionPackage.eNS_URI) instanceof SecondEditionPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SecondEditionPackage.eNS_URI) : SecondEditionPackage.eINSTANCE);
		org.mro.grib.model.files.secondEdition.grids.impl.GridsPackageImpl theGridsPackage_1 = (org.mro.grib.model.files.secondEdition.grids.impl.GridsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.secondEdition.grids.GridsPackage.eNS_URI) instanceof org.mro.grib.model.files.secondEdition.grids.impl.GridsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.secondEdition.grids.GridsPackage.eNS_URI) : org.mro.grib.model.files.secondEdition.grids.GridsPackage.eINSTANCE);
		org.mro.grib.model.files.secondEdition.sections.impl.SectionsPackageImpl theSectionsPackage_1 = (org.mro.grib.model.files.secondEdition.sections.impl.SectionsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.secondEdition.sections.SectionsPackage.eNS_URI) instanceof org.mro.grib.model.files.secondEdition.sections.impl.SectionsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.secondEdition.sections.SectionsPackage.eNS_URI) : org.mro.grib.model.files.secondEdition.sections.SectionsPackage.eINSTANCE);
		ProductsPackageImpl theProductsPackage = (ProductsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProductsPackage.eNS_URI) instanceof ProductsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProductsPackage.eNS_URI) : ProductsPackage.eINSTANCE);
		DataRepresentationsPackageImpl theDataRepresentationsPackage = (DataRepresentationsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(DataRepresentationsPackage.eNS_URI) instanceof DataRepresentationsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(DataRepresentationsPackage.eNS_URI) : DataRepresentationsPackage.eINSTANCE);

		// Create package meta-data objects
		theMeteorologicalPackage.createPackageContents();
		theFirstEditionPackage.createPackageContents();
		theGridsPackage.createPackageContents();
		theSectionsPackage.createPackageContents();
		theSecondEditionPackage.createPackageContents();
		theGridsPackage_1.createPackageContents();
		theSectionsPackage_1.createPackageContents();
		theProductsPackage.createPackageContents();
		theDataRepresentationsPackage.createPackageContents();

		// Initialize created meta-data
		theMeteorologicalPackage.initializePackageContents();
		theFirstEditionPackage.initializePackageContents();
		theGridsPackage.initializePackageContents();
		theSectionsPackage.initializePackageContents();
		theSecondEditionPackage.initializePackageContents();
		theGridsPackage_1.initializePackageContents();
		theSectionsPackage_1.initializePackageContents();
		theProductsPackage.initializePackageContents();
		theDataRepresentationsPackage.initializePackageContents();

		// Mark meta-data to indicate it can't be changed
		theMeteorologicalPackage.freeze();

  
		// Update the registry and return the package
		EPackage.Registry.INSTANCE.put(MeteorologicalPackage.eNS_URI, theMeteorologicalPackage);
		return theMeteorologicalPackage;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getTemperatureProducts() {
		return temperatureProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getMeteorologicalProducts() {
		return meteorologicalProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getMoistureProducts() {
		return moistureProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getMomentumProducts() {
		return momentumProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getMassProducts() {
		return massProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getShortWaveRadiationProducts() {
		return shortWaveRadiationProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getLongWaveRadiationProducts() {
		return longWaveRadiationProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getCloudProducts() {
		return cloudProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getThermodynamicStabilityIndicesProducts() {
		return thermodynamicStabilityIndicesProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getAerosolsProducts() {
		return aerosolsProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getTraceGasesProducts() {
		return traceGasesProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getRadarProducts() {
		return radarProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getForecastRadarImageryProducts() {
		return forecastRadarImageryProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getNuclearRadiologyProducts() {
		return nuclearRadiologyProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getPhysicalAtmosphericPropertiesProducts() {
		return physicalAtmosphericPropertiesProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getAtmosphericChemicalConstituentsProducts() {
		return atmosphericChemicalConstituentsProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getCCITTIA5StringProducts() {
		return ccittia5StringProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getMiscellaneousProducts() {
		return miscellaneousProductsEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public MeteorologicalFactory getMeteorologicalFactory() {
		return (MeteorologicalFactory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create enums
		temperatureProductsEEnum = createEEnum(TEMPERATURE_PRODUCTS);
		meteorologicalProductsEEnum = createEEnum(METEOROLOGICAL_PRODUCTS);
		moistureProductsEEnum = createEEnum(MOISTURE_PRODUCTS);
		momentumProductsEEnum = createEEnum(MOMENTUM_PRODUCTS);
		massProductsEEnum = createEEnum(MASS_PRODUCTS);
		shortWaveRadiationProductsEEnum = createEEnum(SHORT_WAVE_RADIATION_PRODUCTS);
		longWaveRadiationProductsEEnum = createEEnum(LONG_WAVE_RADIATION_PRODUCTS);
		cloudProductsEEnum = createEEnum(CLOUD_PRODUCTS);
		thermodynamicStabilityIndicesProductsEEnum = createEEnum(THERMODYNAMIC_STABILITY_INDICES_PRODUCTS);
		aerosolsProductsEEnum = createEEnum(AEROSOLS_PRODUCTS);
		traceGasesProductsEEnum = createEEnum(TRACE_GASES_PRODUCTS);
		radarProductsEEnum = createEEnum(RADAR_PRODUCTS);
		forecastRadarImageryProductsEEnum = createEEnum(FORECAST_RADAR_IMAGERY_PRODUCTS);
		nuclearRadiologyProductsEEnum = createEEnum(NUCLEAR_RADIOLOGY_PRODUCTS);
		physicalAtmosphericPropertiesProductsEEnum = createEEnum(PHYSICAL_ATMOSPHERIC_PROPERTIES_PRODUCTS);
		atmosphericChemicalConstituentsProductsEEnum = createEEnum(ATMOSPHERIC_CHEMICAL_CONSTITUENTS_PRODUCTS);
		ccittia5StringProductsEEnum = createEEnum(CCITTIA5_STRING_PRODUCTS);
		miscellaneousProductsEEnum = createEEnum(MISCELLANEOUS_PRODUCTS);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Initialize enums and add enum literals
		initEEnum(temperatureProductsEEnum, TemperatureProducts.class, "TemperatureProducts"); //$NON-NLS-1$
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.TEMPERATURE);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.VIRTUAL_TEMPERATURE);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.POTENTIAL_TEMPERATURE);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.PSEUDO_ADIABATIC_POTENTIAL_TEMPERATURE);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.MAXIMUM_TEMPERATURE);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.MINIMUM_TEMPERATURE);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.DEWPOINT_TEMPERATURE);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.DEWPOINT_DEPRESSION);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.LAPSE_RATE);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.TEMPERATURE_ANOMALY);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.LATENT_HEAT_NET_FLUX);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.SENSIBLE_HEAT_NET_FLUX);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.HEAT_INDEX);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.WIND_CHILL_FACTOR);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.MINIMUM_DEWPOINT_DEPRESSION);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.VIRTUAL_POTENTIAL_TEMPERATURE);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.SNOW_PHASE_CHANGE_HEAT_FLUX);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.SKIN_TEMPERATURE);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.SNOW_TEMPERATURE);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.TURBULENT_TRANSFERT_COEFFICIENT_FOR_HEAT);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.TURBULENT_DIFFUSION_COEFFICIENT_FOR_HEAT);
		addEEnumLiteral(temperatureProductsEEnum, TemperatureProducts.MISSING);

		initEEnum(meteorologicalProductsEEnum, MeteorologicalProducts.class, "MeteorologicalProducts"); //$NON-NLS-1$
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.TEMPERATURE);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.MOISTURE);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.MOMENTUM);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.MASS);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.SHORT_WAVE_RADIATION);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.LONG_WAVE_RADIATION);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.CLOUD);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.THERMODYNAMIC_STABILITY_INDICES);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.KINEMATIC_STABILITY_INDICES);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.TEMPERATURE_PROBABILITIES);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.MOISTURE_PROBABILITIES);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.MOMENTUM_PROBABILITIES);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.MASS_PROBABILITIES);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.AEROSOLS);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.TRACE_GASES);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.RADAR);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.FORECAST_RADAR_IMAGERY);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.ELECTRODYNAMICS);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.NUCLEAR_RADIOLOGY);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.PHYSICAL_ATMOSPHERIC_PROPERTIES);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.ATMOSPHERIC_CHEMICAL_CONSTITUENTS);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.CCITT_IA5_STRING);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.MISCELLANEOUS);
		addEEnumLiteral(meteorologicalProductsEEnum, MeteorologicalProducts.MISSING);

		initEEnum(moistureProductsEEnum, MoistureProducts.class, "MoistureProducts"); //$NON-NLS-1$
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SPECIFIC_HUMIDITY);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.RELATIVE_HUMIDITY);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.HUMIDITY_MIXING_RATIO);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.PRECIPITABLE_WATER);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.VAPOUR_PRESSURE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SATURATION_DEFICIT);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.EVAPORATION);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.PRECIPITATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_PRECIPITATION);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.LARGE_SCALE_PRECIPITATION);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CONVECTIVE_PRECIPITATION);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SNOW_DEPTH);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SNOWFALL_RATE_WATER_EQUIVALENT);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.WATER_EQUIVALENT_OF_ACCUMULATED_SNOW_DEPTH);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CONVECTIVE_SNOW);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.LARGE_SCALE_SNOW);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SNOW_MELT);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SNOW_AGE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.ABSOLUTE_HUMIDITY);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.PRECIPITATION_TYPE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.INTEGRATED_LIQUID_WATER);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CONDENSATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CLOUD_MIXING_RATIO);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.ICE_WATER_MIXING_RATIO);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.RAIN_MIXING_RATIO);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SNOW_MIXING_RATIO);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.HORIZONTAL_MOISTURE_CONVERGENCE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.MAXIMUM_RELATIVE_HUMIDITY);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.MAXIMUM_ABSOLUTE_HUMIDITY);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_SNOWFALL);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.PRECIPITABLE_WATER_CATEGORY);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.HAIL);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.GRAUPEL);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CATEGORICAL_RAIN);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CATEGORICAL_FREEZING_RAIN);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CATEGORICAL_ICE_PELLETS);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CATEGORICAL_SNOW);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CONVECTIVE_PRECIPITATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.HORIZONTAL_MOISTURE_DIVERGENCE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.PER_CENT_FROZEN_PRECIPITATION);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.POTENTIAL_EVAPORATION);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.POTENTIAL_EVAPORATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SNOW_COVER);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.RAIN_FACTOR_OF_TOTAL_CLOUD_WATER);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.RIME_FACTOR);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_COLUMN_INTEGRATED_RAIN);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_COLUMN_INTEGRATED_SNOW);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.LARGE_SCALE_WATER_PRECIPITATION);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CONVECTIVE_WATER_PRECIPITATION);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_WATER_PRECIPITATION);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_SNOW_PRECIPITATION);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_COLUMN_WATER);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_PRECIPITATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_SNOWFALL_RATE_WATER_EQUIVALENT);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.LARGE_SCALE_PRECIPITATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CONVECTIVE_SNOWFALL_RATE_WATER_EQUIVALENT);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.LARGE_SCALE_SNOWFALL_RATE_WATER_EQUIVALENT);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_SNOWFALL_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CONVECTIVE_SNOWFALL_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.LARGE_SCALE_SNOWFALL_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SNOW_DEPTH_WATER_EQUIVALENT);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SNOW_DENSITY);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SNOW_EVAPORATION);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_COLUMN_INTEGRATED_WATER_VAPOUR);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.RAIN_PRECIPITATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SNOW_PRECIPITATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.FREEZING_RAIN_PRECIPITATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.ICE_PELLETS_PRECIPITATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_COLUMN_INTEGRATED_CLOUD_WATER);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_COLUMN_INTEGRATED_CLOUD_ICE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.HAIL_MIXING_RATIO);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_COLUMN_INTEGRATED_HAIL);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.HAIL_PRECIPITATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_COLUMN_INTEGRATED_GRAUPEL);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.GRAUPEL_PRECIPITATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CONVECTIVE_RAIN_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.LARGE_SCALE_RAIN_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_COLUMN_INTEGRATED_WATER);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.EVAPORATION_RATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_CONDENSATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_COLUMN_INTEGRATED_CONDENSATE);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.CLOUD_ICE_MIXING_RATIO);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SPECIFIC_CLOUD_LIQUID_WATER_CONTENT);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SPECIFIC_CLOUD_ICE_WATER_CONTENT);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SPECIFIC_RAINWATER_CONTENT);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.SPECIFIC_SNOW_WATER_CONTENT);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.TOTAL_KINEMATIC_MOISTURE_FLUX);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.UCOMPONENT_KINEMATIC_MOISTURE_FLUX);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.VCOMPONENT_KINEMATIC_MOISTURE_FLUX);
		addEEnumLiteral(moistureProductsEEnum, MoistureProducts.MISSING);

		initEEnum(momentumProductsEEnum, MomentumProducts.class, "MomentumProducts"); //$NON-NLS-1$
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.WIND_DIRECTION);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.WIND_SPEED);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.UCOMPONENT_OF_WIND);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.VCOMPONENT_OF_WIND);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.STREAM_FUNCTION);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.VELOCITY_POTENTIAL);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.MONTGOMERY_STREAM_FUNCTION);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.SIGMA_COORDINATE_VERTICAL_VELOCITY);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.VERTICAL_VELOCITY_PRESSURE);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.VERTICAL_VELOCITY_GEOMETRIC);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.ABSOLUTE_VORTICITY);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.ABSOLUTE_DIVERGENCE);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.RELATIVE_VORTICITY);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.RELATIVE_DIVERGENCE);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.POTENTIAL_VORTICITY);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.VERTICAL_UCOMPONENT_SHEAR);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.VERTICAL_VCOMPONENT_SHEAR);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.MOMENTUM_FLUX_UCOMPONENT);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.MOMENTUM_FLUX_VCOMPONENT);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.WIND_MIXING_ENERGY);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.BOUNDARY_LAYER_DISSIPATION);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.MAXIMUM_WIND_SPEED);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.WIND_SPEED_GUST);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.UCOMPONENT_OF_WIND_GUST);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.VCOMPONENT_OF_WIND_GUST);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.VERTICAL_SPEED_SHEAR);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.HORIZONTAL_MOMENTUM_FLUX);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.UCOMPONENT_STORM_MOTION);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.VCOMPONENT_STORM_MOTION);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.DRAG_COEFFICIENT);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.FRICTIONAL_VELOCITY);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.TURBULENT_DIFFUSION_COEFFICIENT_FOR_MOMENTUM);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.ETA_COORDINATE_VERTICAL_VELOCITY);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.WIND_FETCH);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.NORMAL_WIND_COMPONENT);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.TANGENTIAL_WIND_COMPONENT);
		addEEnumLiteral(momentumProductsEEnum, MomentumProducts.MISSING);

		initEEnum(massProductsEEnum, MassProducts.class, "MassProducts"); //$NON-NLS-1$
		addEEnumLiteral(massProductsEEnum, MassProducts.PRESSURE);

		initEEnum(shortWaveRadiationProductsEEnum, ShortWaveRadiationProducts.class, "ShortWaveRadiationProducts"); //$NON-NLS-1$
		addEEnumLiteral(shortWaveRadiationProductsEEnum, ShortWaveRadiationProducts.NET_SHORT_WAVE_RADIATION_FLUX);

		initEEnum(longWaveRadiationProductsEEnum, LongWaveRadiationProducts.class, "LongWaveRadiationProducts"); //$NON-NLS-1$
		addEEnumLiteral(longWaveRadiationProductsEEnum, LongWaveRadiationProducts.NET_LONG_WAVE_RADIATION_FLUX);

		initEEnum(cloudProductsEEnum, CloudProducts.class, "CloudProducts"); //$NON-NLS-1$
		addEEnumLiteral(cloudProductsEEnum, CloudProducts.CLOUD_ICE);

		initEEnum(thermodynamicStabilityIndicesProductsEEnum, ThermodynamicStabilityIndicesProducts.class, "ThermodynamicStabilityIndicesProducts"); //$NON-NLS-1$
		addEEnumLiteral(thermodynamicStabilityIndicesProductsEEnum, ThermodynamicStabilityIndicesProducts.PARCEL_LIFTED_INDEX);

		initEEnum(aerosolsProductsEEnum, AerosolsProducts.class, "AerosolsProducts"); //$NON-NLS-1$
		addEEnumLiteral(aerosolsProductsEEnum, AerosolsProducts.AEROSOL_TYPE);
		addEEnumLiteral(aerosolsProductsEEnum, AerosolsProducts.MISSING);

		initEEnum(traceGasesProductsEEnum, TraceGasesProducts.class, "TraceGasesProducts"); //$NON-NLS-1$
		addEEnumLiteral(traceGasesProductsEEnum, TraceGasesProducts.TOTAL_OZONE);
		addEEnumLiteral(traceGasesProductsEEnum, TraceGasesProducts.MISSING);

		initEEnum(radarProductsEEnum, RadarProducts.class, "RadarProducts"); //$NON-NLS-1$
		addEEnumLiteral(radarProductsEEnum, RadarProducts.BASE_SPECTRUM_WIDTH);
		addEEnumLiteral(radarProductsEEnum, RadarProducts.MISSING);

		initEEnum(forecastRadarImageryProductsEEnum, ForecastRadarImageryProducts.class, "ForecastRadarImageryProducts"); //$NON-NLS-1$
		addEEnumLiteral(forecastRadarImageryProductsEEnum, ForecastRadarImageryProducts.EQUIVALENT_RADAR_REFLECTIVITY_FACTOR_FOR_RAIN);
		addEEnumLiteral(forecastRadarImageryProductsEEnum, ForecastRadarImageryProducts.MISSING);

		initEEnum(nuclearRadiologyProductsEEnum, NuclearRadiologyProducts.class, "NuclearRadiologyProducts"); //$NON-NLS-1$
		addEEnumLiteral(nuclearRadiologyProductsEEnum, NuclearRadiologyProducts.AIR_CONCENTRATION_OF_CAESIUM_137);
		addEEnumLiteral(nuclearRadiologyProductsEEnum, NuclearRadiologyProducts.MISSING);

		initEEnum(physicalAtmosphericPropertiesProductsEEnum, PhysicalAtmosphericPropertiesProducts.class, "PhysicalAtmosphericPropertiesProducts"); //$NON-NLS-1$
		addEEnumLiteral(physicalAtmosphericPropertiesProductsEEnum, PhysicalAtmosphericPropertiesProducts.VISIBILITY);
		addEEnumLiteral(physicalAtmosphericPropertiesProductsEEnum, PhysicalAtmosphericPropertiesProducts.MISSING);

		initEEnum(atmosphericChemicalConstituentsProductsEEnum, AtmosphericChemicalConstituentsProducts.class, "AtmosphericChemicalConstituentsProducts"); //$NON-NLS-1$
		addEEnumLiteral(atmosphericChemicalConstituentsProductsEEnum, AtmosphericChemicalConstituentsProducts.MASS_DENSITY);
		addEEnumLiteral(atmosphericChemicalConstituentsProductsEEnum, AtmosphericChemicalConstituentsProducts.MISSING);

		initEEnum(ccittia5StringProductsEEnum, CCITTIA5StringProducts.class, "CCITTIA5StringProducts"); //$NON-NLS-1$
		addEEnumLiteral(ccittia5StringProductsEEnum, CCITTIA5StringProducts.ARBITRARY_TEXT_STRING);
		addEEnumLiteral(ccittia5StringProductsEEnum, CCITTIA5StringProducts.MISSING);

		initEEnum(miscellaneousProductsEEnum, MiscellaneousProducts.class, "MiscellaneousProducts"); //$NON-NLS-1$
		addEEnumLiteral(miscellaneousProductsEEnum, MiscellaneousProducts.SECONDS_PRIOR_TO_INITIAL_REFERENCE_TIME);
		addEEnumLiteral(miscellaneousProductsEEnum, MiscellaneousProducts.MISSING);

		// Create annotations
		// http://www.eclipse.org/emf/2002/GenModel
		createGenModelAnnotations();
	}

	/**
	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/GenModel</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createGenModelAnnotations() {
		String source = "http://www.eclipse.org/emf/2002/GenModel"; //$NON-NLS-1$		
		addAnnotation
		  (temperatureProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 : Meteorological products\r\nParameter category 0 : temperature", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "0" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Temperature", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Virtual temperature", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "Potential temperature", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "Pseudo-adiabatic potential temperature or equivalent potential temperature", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(4), 
		   source, 
		   new String[] {
			 "description_en", "Maximum temperature", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(5), 
		   source, 
		   new String[] {
			 "description_en", "Minimum temperature", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(6), 
		   source, 
		   new String[] {
			 "description_en", "Dewpoint temperature", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(7), 
		   source, 
		   new String[] {
			 "description_en", "Dewpoint depression (or deficit)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(8), 
		   source, 
		   new String[] {
			 "description_en", "Lapse rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K.m-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(9), 
		   source, 
		   new String[] {
			 "description_en", "Temperature anomaly", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(10), 
		   source, 
		   new String[] {
			 "description_en", "Latent heat net flux", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "W.m-2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(11), 
		   source, 
		   new String[] {
			 "description_en", "Sensible heat net flux", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "W.m-2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(12), 
		   source, 
		   new String[] {
			 "description_en", "Heat index", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(13), 
		   source, 
		   new String[] {
			 "description_en", "Wind chill factor", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(14), 
		   source, 
		   new String[] {
			 "description_en", "Minimum dewpoint depression", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(15), 
		   source, 
		   new String[] {
			 "description_en", "Virtual potential temperature", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(16), 
		   source, 
		   new String[] {
			 "description_en", "Snow phase change heat flux", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "W.m-2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(17), 
		   source, 
		   new String[] {
			 "description_en", "Skin temperature", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(18), 
		   source, 
		   new String[] {
			 "description_en", "Snow temperature (top of snow)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(19), 
		   source, 
		   new String[] {
			 "description_en", "Turbulent transfer coefficient for heat", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Numeric" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(20), 
		   source, 
		   new String[] {
			 "description_en", "Turbulent diffusion coefficient for heat", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m\u00b2.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (temperatureProductsEEnum.getELiterals().get(21), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Temperature" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Moisture" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "Momentum" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "Mass" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(4), 
		   source, 
		   new String[] {
			 "description_en", "Short-wave radiation" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(5), 
		   source, 
		   new String[] {
			 "description_en", "Long-wave radiation" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(6), 
		   source, 
		   new String[] {
			 "description_en", "Cloud" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(7), 
		   source, 
		   new String[] {
			 "description_en", "Thermodynamic stability indices" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(8), 
		   source, 
		   new String[] {
			 "description_en", "Kinematic stability indices" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(9), 
		   source, 
		   new String[] {
			 "description_en", "Temperature probabilities" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(10), 
		   source, 
		   new String[] {
			 "description_en", "Moisture probabilities" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(11), 
		   source, 
		   new String[] {
			 "description_en", "Momentum probabilities" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(12), 
		   source, 
		   new String[] {
			 "description_en", "Mass probabilities" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(13), 
		   source, 
		   new String[] {
			 "description_en", "Aerosols" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(14), 
		   source, 
		   new String[] {
			 "description_en", "Trace gases (e.g. ozone, CO2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(15), 
		   source, 
		   new String[] {
			 "description_en", "Radar" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(16), 
		   source, 
		   new String[] {
			 "description_en", "Forecast radar imagery" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(17), 
		   source, 
		   new String[] {
			 "description_en", "Electrodynamics" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(18), 
		   source, 
		   new String[] {
			 "description_en", "Nuclear/radiology" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(19), 
		   source, 
		   new String[] {
			 "description_en", "Physical atmospheric properties" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(20), 
		   source, 
		   new String[] {
			 "description_en", "Atmospheric chemical constituents" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(21), 
		   source, 
		   new String[] {
			 "description_en", "CCITT IA5 string" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(22), 
		   source, 
		   new String[] {
			 "description_en", "Miscellaneous" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (meteorologicalProductsEEnum.getELiterals().get(23), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products \r\nParameter category 1: moisture", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Specific humidity", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Relative humidity", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "%" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "Humidity mixing ratio", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "Precipitable water", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(4), 
		   source, 
		   new String[] {
			 "description_en", "Vapour pressure", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Pa" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(5), 
		   source, 
		   new String[] {
			 "description_en", "Saturation deficit", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Pa" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(6), 
		   source, 
		   new String[] {
			 "description_en", "Evaporation", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(7), 
		   source, 
		   new String[] {
			 "description_en", "Precipitation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(8), 
		   source, 
		   new String[] {
			 "description_en", "Total precipitation", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(9), 
		   source, 
		   new String[] {
			 "description_en", "Large-scale precipitation", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(10), 
		   source, 
		   new String[] {
			 "description_en", "Convective precipitation", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(11), 
		   source, 
		   new String[] {
			 "description_en", "Snow depth", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(12), 
		   source, 
		   new String[] {
			 "description_en", "Snowfall rate water equivalent", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(13), 
		   source, 
		   new String[] {
			 "description_en", "Water equivalent of accumulated snow depth", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(14), 
		   source, 
		   new String[] {
			 "description_en", "Convective snow", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(15), 
		   source, 
		   new String[] {
			 "description_en", "Large-scale snow", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(16), 
		   source, 
		   new String[] {
			 "description_en", "Snow melt", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(17), 
		   source, 
		   new String[] {
			 "description_en", "Snow age", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "d" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(18), 
		   source, 
		   new String[] {
			 "description_en", "Absolute humidity", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20133" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(19), 
		   source, 
		   new String[] {
			 "description_en", "Precipitation type", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Code table 4.201" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(20), 
		   source, 
		   new String[] {
			 "description_en", "Integrated liquid water", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(21), 
		   source, 
		   new String[] {
			 "description_en", "Condensate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(22), 
		   source, 
		   new String[] {
			 "description_en", "Cloud mixing ratio", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(23), 
		   source, 
		   new String[] {
			 "description_en", "Ice water mixing ratio", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(24), 
		   source, 
		   new String[] {
			 "description_en", "Rain mixing ratio", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(25), 
		   source, 
		   new String[] {
			 "description_en", "Snow mixing ratio", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(26), 
		   source, 
		   new String[] {
			 "description_en", "Horizontal moisture convergence", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(27), 
		   source, 
		   new String[] {
			 "description_en", "Maximum relative humidity", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "%" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(28), 
		   source, 
		   new String[] {
			 "description_en", "Maximum absolute humidity", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20133" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(29), 
		   source, 
		   new String[] {
			 "description_en", "Total snowfall", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(30), 
		   source, 
		   new String[] {
			 "description_en", "Precipitable water category", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Code table 4.202" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(31), 
		   source, 
		   new String[] {
			 "description_en", "Hail", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(32), 
		   source, 
		   new String[] {
			 "description_en", "Graupel (snow pellets)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(33), 
		   source, 
		   new String[] {
			 "description_en", "Categorical rain", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Code table 4.222" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(34), 
		   source, 
		   new String[] {
			 "description_en", "Categorical freezing rain", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Code table 4.222" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(35), 
		   source, 
		   new String[] {
			 "description_en", "Categorical ice pellets", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Code table 4.222" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(36), 
		   source, 
		   new String[] {
			 "description_en", "Categorical snow", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Code table 4.222" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(37), 
		   source, 
		   new String[] {
			 "description_en", "Convective precipitation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(38), 
		   source, 
		   new String[] {
			 "description_en", "Horizontal moisture divergence", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(39), 
		   source, 
		   new String[] {
			 "description_en", "Per cent frozen precipitation", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "%" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(40), 
		   source, 
		   new String[] {
			 "description_en", "Potential evaporation", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(41), 
		   source, 
		   new String[] {
			 "description_en", "Potential evaporation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "W.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(42), 
		   source, 
		   new String[] {
			 "description_en", "Snow cover", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "%" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(43), 
		   source, 
		   new String[] {
			 "description_en", "Rain fraction of total cloud water", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Proportion" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(44), 
		   source, 
		   new String[] {
			 "description_en", "Rime factor", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Numeric" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(45), 
		   source, 
		   new String[] {
			 "description_en", "Total column integrated rain", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(46), 
		   source, 
		   new String[] {
			 "description_en", "Total column integrated snow", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(47), 
		   source, 
		   new String[] {
			 "description_en", "Large scale water precipitation (non-convective)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(48), 
		   source, 
		   new String[] {
			 "description_en", "Convective water precipitation", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(49), 
		   source, 
		   new String[] {
			 "description_en", "Total water precipitation", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m-2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(50), 
		   source, 
		   new String[] {
			 "description_en", "Total snow precipitation", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(51), 
		   source, 
		   new String[] {
			 "description_en", "Total column water (Vertically integrated total water (vapour + cloud water/ice))", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(52), 
		   source, 
		   new String[] {
			 "description_en", "Total precipitation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(53), 
		   source, 
		   new String[] {
			 "description_en", "Total snowfall rate water equivalent", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(54), 
		   source, 
		   new String[] {
			 "description_en", "Large scale precipitation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(55), 
		   source, 
		   new String[] {
			 "description_en", "Convective snowfall rate water equivalent", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m-2.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(56), 
		   source, 
		   new String[] {
			 "description_en", "Large scale snowfall rate water equivalent", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(57), 
		   source, 
		   new String[] {
			 "description_en", "Total snowfall rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(58), 
		   source, 
		   new String[] {
			 "description_en", "Convective snowfall rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(59), 
		   source, 
		   new String[] {
			 "description_en", "Large scale snowfall rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(60), 
		   source, 
		   new String[] {
			 "description_en", "Snow depth water equivalent", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(61), 
		   source, 
		   new String[] {
			 "description_en", "Snow density", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m-3" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(62), 
		   source, 
		   new String[] {
			 "description_en", "Snow evaporation", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m-2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(63), 
		   source, 
		   new String[] {
			 "description_en", "Total column integrated water vapour", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m-2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(64), 
		   source, 
		   new String[] {
			 "description_en", "Rain precipitation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(65), 
		   source, 
		   new String[] {
			 "description_en", "Snow precipitation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(66), 
		   source, 
		   new String[] {
			 "description_en", "Freezing rain precipitation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(67), 
		   source, 
		   new String[] {
			 "description_en", "Ice pellets precipitation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(68), 
		   source, 
		   new String[] {
			 "description_en", "Total column integrated cloud water", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(69), 
		   source, 
		   new String[] {
			 "description_en", "Total column integrated cloud ice", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(70), 
		   source, 
		   new String[] {
			 "description_en", "Hail mixing ratio", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(71), 
		   source, 
		   new String[] {
			 "description_en", "Total column integrated hail", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(72), 
		   source, 
		   new String[] {
			 "description_en", "Hail precipitation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(73), 
		   source, 
		   new String[] {
			 "description_en", "Total column integrated graupel", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(74), 
		   source, 
		   new String[] {
			 "description_en", "Graupel (snow pellets) precipitation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(75), 
		   source, 
		   new String[] {
			 "description_en", "Convective rain rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(76), 
		   source, 
		   new String[] {
			 "description_en", "Large scale rain rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(77), 
		   source, 
		   new String[] {
			 "description_en", "Total column integrated water (all components including precipitation)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(78), 
		   source, 
		   new String[] {
			 "description_en", "Evaporation rate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(79), 
		   source, 
		   new String[] {
			 "description_en", "Total condensate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(80), 
		   source, 
		   new String[] {
			 "description_en", "Total column-integrated condensate", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(81), 
		   source, 
		   new String[] {
			 "description_en", "Cloud ice mixing-ratio", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(82), 
		   source, 
		   new String[] {
			 "description_en", "Specific cloud liquid water content", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(83), 
		   source, 
		   new String[] {
			 "description_en", "Specific cloud ice water content", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(84), 
		   source, 
		   new String[] {
			 "description_en", "Specific rainwater content", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(85), 
		   source, 
		   new String[] {
			 "description_en", "Specific snow water content", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(86), 
		   source, 
		   new String[] {
			 "description_en", "Total kinematic moisture flux", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131.m.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(87), 
		   source, 
		   new String[] {
			 "description_en", "u-component (zonal) kinematic moisture flux", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131.m.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(88), 
		   source, 
		   new String[] {
			 "description_en", "v-component (zonal) kinematic moisture flux", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.kg\u20131.m.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (moistureProductsEEnum.getELiterals().get(89), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 2 : momentum", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Wind direction (from which blowing)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "degree true" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Wind speed", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "u-component of wind", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "v-component of wind", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(4), 
		   source, 
		   new String[] {
			 "description_en", "Stream function", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m2.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(5), 
		   source, 
		   new String[] {
			 "description_en", "Velocity potential", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m2.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(6), 
		   source, 
		   new String[] {
			 "description_en", "Montgomery stream function", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m2.s-2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(7), 
		   source, 
		   new String[] {
			 "description_en", "Sigma coordinate vertical velocity", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(8), 
		   source, 
		   new String[] {
			 "description_en", "Vertical velocity (pressure)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Pa.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(9), 
		   source, 
		   new String[] {
			 "description_en", "Vertical velocity (geometric)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(10), 
		   source, 
		   new String[] {
			 "description_en", "Absolute vorticity", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(11), 
		   source, 
		   new String[] {
			 "description_en", "Absolute divergence", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(12), 
		   source, 
		   new String[] {
			 "description_en", "Relative vorticity", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(13), 
		   source, 
		   new String[] {
			 "description_en", "Relative divergence", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(14), 
		   source, 
		   new String[] {
			 "description_en", "Potential vorticity", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K.m2.kg\u20131.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(15), 
		   source, 
		   new String[] {
			 "description_en", "Vertical u-component shear", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(16), 
		   source, 
		   new String[] {
			 "description_en", "Vertical v-component shear", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(17), 
		   source, 
		   new String[] {
			 "description_en", "Momentum flux, u-component", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "N.m-2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(18), 
		   source, 
		   new String[] {
			 "description_en", "Momentum flux, v-component", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "N.m-2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(19), 
		   source, 
		   new String[] {
			 "description_en", "Wind mixing energy", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "J" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(20), 
		   source, 
		   new String[] {
			 "description_en", "Boundary layer dissipation", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "W.m-2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(21), 
		   source, 
		   new String[] {
			 "description_en", "Maximum wind speed", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Parameter deprecated. See Regulation 92.6.2 and use another parameter instead." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(22), 
		   source, 
		   new String[] {
			 "description_en", "Wind speed (gust)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(23), 
		   source, 
		   new String[] {
			 "description_en", "u-component of wind (gust)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(24), 
		   source, 
		   new String[] {
			 "description_en", "v-component of wind (gust)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(25), 
		   source, 
		   new String[] {
			 "description_en", "Vertical speed shear", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(26), 
		   source, 
		   new String[] {
			 "description_en", "Horizontal momentum flux", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "N.m-2" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(27), 
		   source, 
		   new String[] {
			 "description_en", "u-component storm motion", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(28), 
		   source, 
		   new String[] {
			 "description_en", "v-component storm motion", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(29), 
		   source, 
		   new String[] {
			 "description_en", "Drag coefficient", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Numeric" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(30), 
		   source, 
		   new String[] {
			 "description_en", "Frictional velocity", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(31), 
		   source, 
		   new String[] {
			 "description_en", "Turbulent diffusion coefficient for momentum", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m2.s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(32), 
		   source, 
		   new String[] {
			 "description_en", "Eta coordinate vertical velocity", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "s-1" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(33), 
		   source, 
		   new String[] {
			 "description_en", "Wind fetch", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(34), 
		   source, 
		   new String[] {
			 "description_en", "Normal wind component", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s-1", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "In relation to local coordinate axes at a cell edge." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(35), 
		   source, 
		   new String[] {
			 "description_en", "Tangential wind component", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "degree true", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "In relation to local coordinate axes at a cell edge." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (momentumProductsEEnum.getELiterals().get(36), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (massProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 3 : mass", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "3" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (massProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Pressure", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Pa" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (shortWaveRadiationProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 4 : short-wave radiation", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "4" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (shortWaveRadiationProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Net short-wave radiation flux (surface)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "W.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (longWaveRadiationProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 5 : long-wave radiation", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "5" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (longWaveRadiationProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Net long-wave radiation flux (surface)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "W.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (cloudProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 6 : cloud", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "6" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (cloudProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Cloud ice", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20132" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (thermodynamicStabilityIndicesProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 7: thermodynamic stability indices", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "7" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (thermodynamicStabilityIndicesProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Parcel lifted index (to 500 hPa)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "K" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (aerosolsProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 13 : aerosols", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "13" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (aerosolsProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Aerosol type", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Code table 4.205" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (aerosolsProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (traceGasesProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 14 : trace gases", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "14" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (traceGasesProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Total ozone", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "DU" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (traceGasesProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (radarProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 15: radar", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "15" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (radarProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Base spectrum width", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m.s\u20131" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (radarProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (forecastRadarImageryProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product Discipline 0 \u2013 Meteorological products\r\nParameter category 16: forecast radar imagery", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "16" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (forecastRadarImageryProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Equivalent radar reflectivity factor for rain", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "mm6.m\u20133" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (forecastRadarImageryProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (nuclearRadiologyProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 18 : nuclear/radiology", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "18" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (nuclearRadiologyProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Air concentration of caesium 137", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "Bq.m\u20133" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (nuclearRadiologyProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (physicalAtmosphericPropertiesProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 19 : physical atmospheric properties", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "19" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (physicalAtmosphericPropertiesProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Visibility", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "m" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (physicalAtmosphericPropertiesProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (atmosphericChemicalConstituentsProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 20 : atmospheric chemical constituents", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "20" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (atmosphericChemicalConstituentsProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Mass density (concentration)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "kg.m\u20133" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (atmosphericChemicalConstituentsProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (ccittia5StringProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 190: CCITT IA5 string", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "190" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (ccittia5StringProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Arbitrary text string", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "CCITT IA5" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (ccittia5StringProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (miscellaneousProductsEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Product discipline 0 \u2013 Meteorological products\r\nParameter category 191 : miscellaneous", //$NON-NLS-1$ //$NON-NLS-2$
			 "discipline", "0", //$NON-NLS-1$ //$NON-NLS-2$
			 "category", "191" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (miscellaneousProductsEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Seconds prior to initial reference time (defined in Section 1)", //$NON-NLS-1$ //$NON-NLS-2$
			 "unit", "s" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (miscellaneousProductsEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });
	}

} //MeteorologicalPackageImpl
